﻿Public Class USERGROUPCLASS
    ''' <summary>
    ''' class เชื่อมต่อฐานข้อมูล
    ''' </summary>
    Dim connect As CONDB = CONDB.NewConnection()

    ''' <summary>
    ''' select ข้อมูล usergroup จาก table masgrpusr (ไม่ใช้แล้ว)
    ''' </summary>
    Private selectGrpusr As String = "SELECT `grpusrid` AS 'รหัสกลุ่มผู้ใช้งาน', `grpname` AS 'ชื่อกลุ่มผู้ใช้งาน', `status` AS 'สถานะการเปิดใช้งาน' FROM masgrpusr"
    ''' <summary>
    ''' select ข้อมูลพนักงานทั้งหมดที่มีสิทธิ์การใช้งาน map กับข้อมูลพื้นฐานพนักงาน (ไม่ใช้แล้ว เพราะยุบ table usrmainfrn)
    ''' </summary>
    Private selectUser As String = "SELECT a.`umainid` AS 'idผู้ใช้งาน', CONCAT_WS(' ', b.`name`, b.`lname`) AS 'ชื่อ-สกุลพนักงาน', a.`provider` AS 'ตำแหน่งของผู้ใช้งาน', a.`umainname` AS 'username', a.`umainpass` AS 'password', a.`umainpri` AS 'สิทธิ', a.`umainaddf` AS 'รหัสผู้นำเข้าระบบ', CONCAT_WS(' ', c.`name`, c.`lname`) AS 'ผู้นำเข้าระบบ', a.`umainaddtime` AS 'วันที่เข้าระบบ', a.`umaineditl` AS 'รหัสผู้แก้ไขข้อมูลล่าสุด', CONCAT_WS(' ', d.`name`, d.`lname`) AS 'ผู้แก้ไขข้อมูลล่าสุด', a.`umainedittime` AS 'แก้ไขข้อมูลล่าสุด', a.`umainempid` AS 'รหัสพนักงาน', a.`status` AS 'สถานะการเปิดใช้งาน' FROM usrmainfrn a LEFT JOIN hospemp b ON a.umainempid = b.empid LEFT JOIN hospemp c ON a.umainaddf = c.empid LEFT JOIN hospemp d ON a.umaineditl = d.empid"

    ''' <summary>
    ''' Property selectGrpusr
    ''' </summary>
    Public Property selectGrpusr_ As String
        Get
            Return selectGrpusr
        End Get
        Set(value As String)
            selectGrpusr = value
        End Set
    End Property

    ''' <summary>
    ''' Property selectUser
    ''' </summary>
    Public Property selectUser_ As String
        Get
            Return selectUser
        End Get
        Set(value As String)
            selectUser = value
        End Set
    End Property

    ''' <summary>
    ''' สถานะการเปิดใช้งาน
    ''' </summary>
    Private STATUS = Nothing

    ''' <summary>
    ''' Property STATUS
    ''' </summary>
    Property STATUS_ As Boolean
        Get
            Return STATUS
        End Get
        Set(value As Boolean)
            If value = True Then
                STATUS = 1
            Else
                STATUS = 0
            End If
        End Set
    End Property

    ''' <summary>
    ''' รหัสกลุ่มผู้ใช้ (ไม่ใช้แล้ว)
    ''' </summary>
    ''' ----------user group------------

    Private GRPUSRID As Integer = Nothing
    ''' <summary>
    ''' ชื่อกลุ่มโปรแกรม
    ''' </summary>
    ''' <remarks>มาจาก table masgrpprg</remarks>
    Private GRPNAME As String = Nothing

    ''' <summary>
    ''' Property GRPUSRID
    ''' </summary>
    Public Property GRPUSRID_ As Integer
        Get
            Return GRPUSRID
        End Get
        Set(value As Integer)
            GRPUSRID = value
        End Set
    End Property

    ''' <summary>
    ''' Property GRPNAME
    ''' </summary>
    Public Property GRPNAME_ As String
        Get
            Return GRPNAME
        End Get
        Set(value As String)
            GRPNAME = value
        End Set
    End Property

    ''' <summary>
    ''' เพิ่มกลุ่มผู้ใช้เข้าระบบ (ไม่ใช้แล้ว)
    ''' </summary>
    ''' <remarks>input: property ใน class ได้แก่ GRPNAME, STATUS</remarks>
    ''' <returns>
    ''' Boolean
    ''' TRUE เมื่อแก้ไขสำเร็จ
    ''' FALSE เมื่อแก้ไขไม่สำเร็จ
    ''' </returns>
    Public Function insertGroupUser() As Boolean
        If connect.GetTable("SELECT grpusrid FROM masgrpusr WHERE grpname = '" & GRPNAME & "'").Rows.Count > 0 Then
            MsgBox("ไม่สามารถเพิ่มกลุ่มผู้ใช้นี้เข้าสู่ระบบได้ เนื่องจากมีชื่อหรือรหัสโปรแกรมนี้อยู่ในระบบแล้ว")
        Else
            Try
                connect = CONDB.NewConnection()
                connect.ExecuteNonQuery("INSERT INTO masgrpusr (grpname, status) VALUES ('" & GRPNAME & "', '" & STATUS & "')")
                MsgBox("ท่านได้ทำการเพิ่มกลุ่มผู้ใช้เรียบร้อยแล้ว")

                Return True
            Catch ex As Exception
                MsgBox(vbCrLf & ex.Message)
                Return False
            Finally
                connect.Dispose()
            End Try

        End If
    End Function

    ''' <summary>
    ''' แก้ไขข้อมูลกลุ่มผู้ใช้ (ไม่ใช้แล้ว)
    ''' </summary>
    ''' <remarks>input: property ใน class ได้แก่ GRPNAME, STATUS, GRPUSRID</remarks>
    ''' <returns>
    ''' Boolean
    ''' TRUE เมื่อแก้ไขสำเร็จ
    ''' FALSE เมื่อแก้ไขไม่สำเร็จ
    ''' </returns>
    Public Function editGroupUser() As Boolean
        Try
            connect = CONDB.NewConnection()
            connect.ExecuteNonQuery("UPDATE masgrpusr SET grpname = '" & GRPNAME & "', status = '" & STATUS & "' WHERE grpusrid = '" & GRPUSRID & "'")
            MsgBox("ท่านได้ทำการแก้ไขข้อมูลกลุ่มผู้ใช้เรียบร้อยแล้ว")

            Return True
        Catch ex As Exception
            MsgBox(vbCrLf & ex.Message)
            Return False
        End Try
        connect.Dispose()
    End Function

    ''' <summary>
    ''' ID พนักงาน
    ''' </summary>
    ''' <remarks>PRIMARY Key ของ table hospemp</remarks>
    ''' ----------user------------
    Private EMPID As Integer = Nothing
    ''' <summary>
    ''' เลขบัตรประชาชน
    ''' </summary>
    Private CID As String = Nothing
    ''' <summary>
    ''' รหัสพนักงาน
    ''' </summary>
    ''' <remarks>มีรายละเอียดเพิ่มเติม แต่ไม่แน่ใจว่ายังไงต้องถามพี่กล้วยอีกรอบ</remarks>
    Private EMPCODE As Integer = Nothing
    ''' <summary>
    ''' คำนำหน้าพนักงาน (นาย, นาง, นางสาว, ...)
    ''' </summary>
    ''' <remarks>จาก table hospemp</remarks>
    Private PRENAME As Integer = Nothing
    ''' <summary>
    ''' ชื่อพนักงาน
    ''' </summary>
    ''' <remarks>จาก table hospemp</remarks>
    Private NAME As String = Nothing
    ''' <summary>
    ''' นามสกุลพนักงาน
    ''' </summary>
    ''' <remarks>จาก table hospemp</remarks>
    Private LNAME As String = Nothing
    ''' <summary>
    ''' ชื่อเล่น
    ''' </summary>
    ''' <remarks>จาก table hospemp</remarks>
    Private NNAME As String = Nothing
    ''' <summary>
    ''' ชื่ออังกฤษ พนักงาน (ทั้งชื่อและนามสกุล)
    ''' </summary>
    ''' <remarks>จาก table hospemp</remarks>
    Private NAME_EN As String = Nothing
    ''' <summary>
    ''' เพศของพนักงาน
    ''' </summary>
    ''' <remarks>จาก table hospemp</remarks>
    Private SEX As Integer = Nothing
    ''' <summary>
    ''' fact ระบุว่า พนักงานคนนี้ทำงานเกี่ยวข้องกับการเงินหรือไม่
    ''' </summary>
    ''' <remarks>
    ''' 1 เกี่ยวข้องกับการเงิน
    ''' 0 ไม่เกี่ยวข้องกับการเงิน
    ''' </remarks>
    Private F_CASH As Integer = Nothing
    ''' <summary>
    ''' userrequest ของพนักงาน
    ''' </summary>
    ''' <remarks>จาก table hospemp</remarks>
    Private USREQ As String = Nothing

    ''' <summary>
    ''' Property EMPID
    ''' </summary>
    Public Property EMPID_ As Integer
        Get
            Return EMPID
        End Get
        Set(value As Integer)
            EMPID = value
        End Set
    End Property

    ''' <summary>
    ''' Property CID
    ''' </summary>
    Public Property CID_ As String
        Get
            Return CID
        End Get
        Set(value As String)
            CID = value
        End Set
    End Property

    ''' <summary>
    ''' Property EMPCODE
    ''' </summary>
    Public Property EMPCODE_ As Integer
        Get
            Return EMPCODE
        End Get
        Set(value As Integer)
            EMPCODE = value
        End Set
    End Property

    ''' <summary>
    ''' Property PRENAME
    ''' </summary>
    Public Property PRENAME_ As Integer
        Get
            Return PRENAME
        End Get
        Set(value As Integer)
            PRENAME = value
        End Set
    End Property

    ''' <summary>
    ''' Property NAME
    ''' </summary>
    Public Property NAME_ As String
        Get
            Return NAME
        End Get
        Set(value As String)
            NAME = value
        End Set
    End Property

    ''' <summary>
    ''' Property LNAME
    ''' </summary>
    Public Property LNAME_ As String
        Get
            Return LNAME
        End Get
        Set(value As String)
            LNAME = value
        End Set
    End Property

    ''' <summary>
    ''' Property NNAME
    ''' </summary>
    Public Property NNAME_ As String
        Get
            Return NNAME
        End Get
        Set(value As String)
            NNAME = value
        End Set
    End Property

    ''' <summary>
    ''' Property NAME_EN
    ''' </summary>
    Public Property NAME_EN_ As String
        Get
            Return NAME_EN
        End Get
        Set(value As String)
            NAME_EN = value
        End Set
    End Property

    ''' <summary>
    ''' Property SEX
    ''' </summary>
    Public Property SEX_ As Integer
        Get
            Return SEX
        End Get
        Set(value As Integer)
            SEX = value
        End Set
    End Property

    ''' <summary>
    ''' Property F_CASH
    ''' </summary>
    Public Property F_CASH_ As Boolean
        Get
            Return F_CASH
        End Get
        Set(value As Boolean)
            If value = True Then
                F_CASH = 1
            Else
                F_CASH = 0
            End If
        End Set
    End Property

    ''' <summary>
    ''' Property USREQ
    ''' </summary>
    Public Property USREQ_ As String
        Get
            Return USREQ
        End Get
        Set(value As String)
            USREQ = value
        End Set
    End Property

    ''' <summary>
    ''' เพิ่มผู้ใช้เข้า table hospemp
    ''' </summary>
    ''' <remarks>input: property ใน class ได้แก่ CID, NAME, LNAME, EMPCODE, PRENAME, NAME, LNAME, NNAME, NAME_EN, SEX, STATUS, F_CASH, USREQ</remarks>
    ''' <returns>
    ''' Boolean
    ''' TRUE เมื่อเพิ่มสำเร็จ
    ''' FALSE เมื่อเพิ่มไม่สำเร็จ
    ''' </returns>
    Public Function insertUser() As Boolean
        'ยังขาดส่วนของผู้เพิ่ม

        If connect.GetTable("SELECT empid FROM hospemp WHERE cid = '" & CID & "' OR (name = '" & NAME & "' AND lname = '" & LNAME & "')").Rows.Count > 0 Then
            MsgBox("ไม่สามารถเพิ่มผู้ใช้นี้เข้าสู่ระบบได้ เนื่องจากมีรายชื่อพนักงานนี้อยู่ในระบบแล้ว")
        Else
            Try
                connect = CONDB.NewConnection()

                Dim sql As String
                sql = "INSERT INTO hospemp (cid, empcode, prename, name, lname, nname, name_en, sex, status, f_cash, usreq) VALUES ('" & CID & "', "

                If EMPCODE = 0 Then
                    sql += "null, "
                Else
                    sql += "'" & EMPCODE & "', "
                End If

                sql += "'" & PRENAME & "', '" & NAME & "', '" & LNAME & "', '" & NNAME & "', '" & NAME_EN & "', '" & SEX & "', '" & STATUS & "', '" & F_CASH & "', '" & USREQ & "');"

                connect.BeginTrans()
                connect.ExecuteNonQuery(sql)
                connect.CommitTrans()
                connect.Dispose()
                Return True
            Catch ex As Exception
                MsgBox(vbCrLf & ex.Message)
                connect.Dispose()
                Return False
            End Try
        End If
    End Function

    ''' <summary>
    ''' แก้ไขข้อมูล user ใน table hospemp
    ''' </summary>
    ''' <remarks>input: property ใน class ได้แก่ CID, EMPCODE, PRENAME, NAME, LNAME, NNAME, NAME_EN, SEX, STATUS, F_CASH, USREQ, EMPID</remarks>
    ''' <returns>
    ''' boolean
    ''' TRUE เมื่อแก้ไขข้อมูลสำเร็จ
    ''' FALSE เมื่อแก้ไขข้อมูลไม่สำเร็จ
    ''' </returns>
    Public Function editUser() As Boolean
        'ยังขาดส่วนของผู้แก้ไข

        Try
            connect = CONDB.NewConnection()

            Dim sql As String = "UPDATE hospemp SET cid = '" & CID & "', "

            If EMPCODE = 0 Then
                sql += "empcode =  null, "
            Else
                sql += "empcode = '" & EMPCODE & "', "
            End If

            sql += "prename = '" & PRENAME & "', name = '" & NAME & "', lname = '" & LNAME & "', nname = '" & NNAME & "', name_en = '" & NAME_EN & "', sex = '" & SEX & "', status = '" & STATUS & "', f_cash = '" & F_CASH & "', usreq = '" & USREQ & "'  WHERE empid = '" & EMPID & "'"
            connect.ExecuteNonQuery(sql)

            'MsgBox("ท่านได้ทำการแก้ไขชื่อกลุ่มผู้ใช้เรียบร้อยแล้ว")

            connect.Dispose()
            Return True
        Catch ex As Exception
            MsgBox(vbCrLf & ex.Message)
            connect.Dispose()
            Return False
        End Try
    End Function

    ''' <summary>
    ''' รหัสโปรแกรม
    ''' </summary>
    ''' <remarks>จาก table masprg</remarks>
    ''' ให้สิทธิ์พนักงาน

    Private PRGID As Integer = Nothing
    ''' <summary>
    ''' permission เพิ่มข้อมูล
    ''' </summary>
    Private PADD = Nothing
    ''' <summary>
    ''' permission ลบข้อมูล
    ''' </summary>
    Private PDEL = Nothing
    ''' <summary>
    ''' permission แก้ไขข้อมูล
    ''' </summary>
    Private PUPD = Nothing
    ''' <summary>
    ''' permission พิมพ์เอกสาร
    ''' </summary>
    Private PPRT = Nothing
    ''' <summary>
    ''' permission ดูข้อมูล
    ''' </summary>
    Private PSEE = Nothing

    ''' <summary>
    ''' Property PRGID
    ''' </summary>
    Public Property PRGID_ As Integer
        Get
            Return PRGID
        End Get
        Set(value As Integer)
            PRGID = value
        End Set
    End Property

    ''' <summary>
    ''' Property PADD
    ''' </summary>
    Property PADD_ As Boolean
        Get
            Return PADD
        End Get
        Set(value As Boolean)
            If value = True Then
                PADD = 1
            Else
                PADD = 0
            End If
        End Set
    End Property

    ''' <summary>
    ''' Property PDEL
    ''' </summary>
    Property PDEL_ As Boolean
        Get
            Return PDEL
        End Get
        Set(value As Boolean)
            If value = True Then
                PDEL = 1
            Else
                PDEL = 0
            End If
        End Set
    End Property

    ''' <summary>
    ''' Property PUPD
    ''' </summary>
    Property PUPD_ As Boolean
        Get
            Return PUPD
        End Get
        Set(value As Boolean)
            If value = True Then
                PUPD = 1
            Else
                PUPD = 0
            End If
        End Set
    End Property

    ''' <summary>
    ''' Property PPRT
    ''' </summary>
    Property PPRT_ As Boolean
        Get
            Return PPRT
        End Get
        Set(value As Boolean)
            If value = True Then
                PPRT = 1
            Else
                PPRT = 0
            End If
        End Set
    End Property

    ''' <summary>
    ''' Property PSEE
    ''' </summary>
    Property PSEE_ As Boolean
        Get
            Return PSEE
        End Get
        Set(value As Boolean)
            If value = True Then
                PSEE = 1
            Else
                PSEE = 0
            End If
        End Set
    End Property

    ''' <summary>
    ''' เพิ่ม policy ของ user แต่ละคน ลง table usrpolicy
    ''' </summary>
    ''' <remarks>input: property ใน class ได้แก่ EMPID, PRGID, PADD, PDEL,PUPD, PPRT, PSEE, STATUS</remarks>
    ''' <returns>
    ''' boolean
    ''' TRUE เมื่อเพิ่มข้อมูลสำเร็จ
    ''' FALSE เมื่อเพิ่มข้อมูลไม่สำเร็จ
    ''' </returns>
    Public Function addUserPolicy() As Boolean
        Dim sql As String = "INSERT INTO usrpolicy (empid, prgid, padd, pdel, pupd, pprt, psee, status) VALUE ('" & EMPID & "', '" & PRGID & "', '" & PADD & "', '" & PDEL & "', '" & PUPD & "', '" & PPRT & "', '" & PSEE & "', '" & STATUS & "')"

        connect.BeginTrans()
        Try
            connect.ExecuteNonQuery(sql)
            connect.CommitTrans()
            connect.Dispose()
            Return True
        Catch ex As Exception
            connect.RollbackTrans()
            MsgBox(ex.ToString)
            connect.Dispose()
            Return False
        Finally
            connect.Dispose()
        End Try
    End Function

    ''' <summary>
    ''' ID กลุ่มโปรแกรม
    ''' </summary>
    ''' <remarks>Primary Key จาก table masgrpprg</remarks>
    Private GPRGID As String = Nothing

    ''' <summary>
    ''' Property GPRGID
    ''' </summary>
    Public Property GPRGID_ As String
        Get
            Return GPRGID
        End Get
        Set(value As String)
            GPRGID = value
        End Set
    End Property

    ''' <summary>
    ''' เพิ่ม policy ของกลุ่มโปรแกรม ลง table grppolicy
    ''' </summary>
    ''' <remarks>input: property ใน class ได้แก่ GPRGID, PRGID, PADD, PDEL, PUPD, PPRT, PSEE</remarks>
    ''' <returns>
    ''' Boolean
    ''' TRUE เมื่อเพิ่ม permission สำเร็จ
    ''' FALSE เมื่อเพิ่ม permission ไม่สำเร็จ
    ''' </returns>
    Public Function addSoftwareGroupPolicy() As Boolean
        Dim sql As String = "INSERT INTO grppolicy (gprgid, prgid, padd, pdel, pupd, pprt, psee) VALUE ('" & GPRGID & "', '" & PRGID & "', '" & PADD & "', '" & PDEL & "', '" & PUPD & "', '" & PPRT & "', '" & PSEE & "')"

        connect.BeginTrans()
        Try
            connect.ExecuteNonQuery(sql)
            connect.CommitTrans()
            connect.Dispose()
            Return True
        Catch ex As Exception
            connect.RollbackTrans()
            MsgBox(ex.ToString)
            connect.Dispose()
            Return False
        Finally
            connect.Dispose()
        End Try
    End Function

End Class
